(function(){

    //定义一个控件为huangbiao，设置为全局变量，相当于一个命名空间
    window.huangbiao={};

    //页面跳转转到target属性指明的链接，obj代表控件this
    function jumpTo(obj){
        var _href = obj.getAttribute("target");
        window.location.href = _href;
    }

    //获取屏幕尺寸
    function getScreenWidth(){
        return document.documentElement.clientWidth;
    }

    //获取屏幕尺寸
    function getScreenHeight(){
        return document.documentElement.clientHeight;
    }

    //只允许输入数字,obj为控件对象，event为触发的事件
    function numberInputOnly(obj,event){
        if(obj.value.length==1){
            obj.value=obj.value.replace(/[^1-9]/g,'');
        }else{
            obj.value=obj.value.replace(/\D/g,'');
        }
    }


    //将自定义的事件绑定到自己的命名空间中
    function init(){
        huangbiao.jumpTo=jumpTo;
        huangbiao.getScreenWidth=getScreenWidth;
        huangbiao.getScreenHeight=getScreenHeight;
        huangbiao.numberInputOnly=numberInputOnly;
    }

    huangbiao.init=init;
    huangbiao.init();

})();



/******************Array 对象扩展***********************/
/** 去除数组中的重复项 **/
Array.prototype.removeRepeat = function () {
    var reset = [], done = {};
    for (var i = 0; i < this.length; i++) {
        var temp = this[i];
        //这里的json对象一定要以数组的方式访问，否则会认为找不到这个对象
        if (!done[temp]) {
            done[temp] = true;
            reset.push(temp);
        }
    }
    return reset;
}

//删除指定的数组
Array.prototype.del = function(n)
{
    if (n<0) return this;
    return this.slice(0,n).concat(this.slice(n+1,this.length));
}

// 数组第一次出现指定元素值的位置
Array.prototype.indexOf = function(o)
{
    for (var i=0; i<this.length; i++) if (this[i]==o) return i;
    return -1;
}

/******************Date 对象扩展***********************/


Date.prototype.getWeek = function () {
    var a = new Array("日", "一", "二", "三", "四", "五", "六");
    var week = new Date().getDay();
    var str = a[week];
    return str;
};

//将指定的秒数加到此实例的值上
Date.prototype.addSeconds = function (value) {
    var second = this.getSeconds();
    this.setSeconds(second + value);
    return this;
};

//将指定的分钟数加到此实例的值上
Date.prototype.addMinutes = function (value) {
    var minute = this.getMinutes();
    this.setMinutes(minute + value);
    return this;
};

//将指定的小时数加到此实例的值上
Date.prototype.addHours = function (value) {
    var hour = this.getHours();
    this.setHours(hour + value);
    return this;
};

//将指定的天数加到此实例的值上
Date.prototype.addDays = function (value) {
    var date = this.getDate();
    this.setDate(date + value);
    return this;
};

//将指定的天数加到此实例的值上
Date.prototype.addDays = function (value) {
    var date = this.getDate();
    this.setDate(date + value);
    return this;
};


//将指定的星期数加到此实例的值上
Date.prototype.addWeeks = function (value) {
    return this.addDays(value * 7);
};

//将指定的月份数加到此实例的值上
Date.prototype.addMonths = function (value) {
    var month = this.getMonth();
    this.setMonth(month + value);
    return this;
};
//将指定的年份数加到此实例的值上
Date.prototype.addYears = function (value) {
    var year = this.getFullYear();
    this.setFullYear(year + value);
    return this;
};

// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
Date.prototype.format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

/******************String 表单检查***********************/
//检查是否是URL地址
String.prototype.isURL=function(){
    var re=/http[s]?:\/\/([\w-]+.)+[\w-]+(\/[\w-./?%&=]*)?/;
    var result = re.test(this);
    return result;
}

//检查表单是否是email字符串
String.prototype.isEmail=function(){
    var re=/\w+([-+.]\w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*/;
    var result = re.test(this);
    return result;
}

//检查号码，正确格式为：XXXX-XXXXXXX，XXXX-XXXXXXXX，XXX-XXXXXXX，XXX-XXXXXXXX，XXXXXXX，XXXXXXXX
String.prototype.isPhoneNumber=function(){
    var re=/^((\d{3,4})|\d{3,4}-)?\d{7,8}$/;
    var result = re.test(this);
    return result;
}


/******************String 数字检查***********************/

//检查是否是正浮点数或者整数，包括0，返回true 和 false
String.prototype.isPositiveNumber=function(){
    var re = /^\d+(\.\d+)?$/;
    var result = re.test(this);
    return result;
}

//检查是否是负浮点数，包括0，返回true 和 false
String.prototype.isFloat=function(){
    var re=/^-?([1-9]\d*.\d+|0.\d*[1-9]\d*|0?.0+|0)$/;
    var result = re.test(this);
    return result;
}

//检查是否是非负浮点数，包括0，返回true 和 false
String.prototype.isNegativFloat=function(){
    var re=/^-([1-9]\d*.\d+|0.\d*[1-9]\d*)$/;
    var result = re.test(this);
    return result;
}

//检查是否是正浮点数，包括0，返回true 和 false
String.prototype.isNaturalFloat=function(){
    var re=/^[1-9]\d*.\d+|0.\d*[1-9]\d*|0?.0+|0$/;
    var result = re.test(this);
    return result;
}


//检查是否是非负整数，包括0，返回true 和 false
String.prototype.isNumber=function(){
    var re=/^(0|[1-9][0-9]*)$/;
    var result = re.test(this);
    return result;
}

//检查是否是负正整数，不包括0，返回true 和 false
String.prototype.isNegativNumber=function(){
    var re=/^-[1-9]\d*$/;
    var result = re.test(this);
    return result;
}

//检查是否是正整数，不包括0，返回true 和 false
String.prototype.isNaturalNumber=function(){
    var re=/^[1-9]\d*$/;
    var result = re.test(this);
    return result;
}

/******************String***********************/
//检查字符串是否是指定字符串开头，返回true 和 false
String.prototype.startWith=function(str){
    var reg=new RegExp("^"+str);
    return reg.test(this);
}
//检查字符串是否是指定字符串结尾，返回true 和 false
String.prototype.endWith=function(str){
    var reg=new RegExp(str+"$");
    return reg.test(this);
}

//一个单词首字母大写,返回字符串
String.prototype.capitalize=function(){
    var result = this.charAt(0).toUpperCase()+this.substring(1).toLocaleLowerCase();
    return result;
}
// 保留字母和空格,返回字符串
String.prototype.getEn = function() {
    var result = this.replace(/[^A-Z a-z]/g, "");
    return result;
}
//逆序
String.prototype.reverse = function() {
    return this.split("").reverse().join("");
}
//检查字符串是否包含自定字符串，返回true 和 false
String.prototype.isContains=function(target){
    var myReg = new RegExp(target);
    var result = myReg.test(this);
    return result;
}
//去除两边的空格,返回字符串
String.prototype.trim = function() {
    var result = this.replace(/^\s+|\s+$/g, "")
    return result;
}
// 除去左边空白,返回字符串
String.prototype.trimLeft = function() {
    return this.replace(/^\s+/g, "");
}
// 除去右边空白,返回字符串
String.prototype.trimRight = function() {
    return this.replace(/\s+$/g, "");
}
// 去除所有的空白
String.prototype.resetBlank = function() {
    var result = this.replace(/\s+/g, "")
    return result;
}

//将json字符串转为json对象
String.prototype.toJson=function(){
    return (new Function("return " + this))();
}

//将json对象转为String
function JsonToString(o) {
    var arr = [];
    var fmt = function(s) {
        if (typeof s == 'object' && s != null) return JsonToStr(s);
        return /^(string)$/.test(typeof s) ? '"' + s + '"' : s;
    }
    for (var i in o)
        arr.push("'" + i + "':" + fmt(o[i]));
    return '{' + arr.join(',') + '}';
}

/*
作者：黄彪
时间：2015-5-6
对字符串的操作全部是以string开头
浏览器操作是以navigate开头
dom节点操作是以dom开头
window操作，是以window开头
日期操作，是以date开头
数字判断是以num开头，包含整数和小数
*/
window.$sqh={


    //判断时间是否是时间格式，形如 (13:04:06)
    "string_isTime":function(targetStr){
        var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
        if (a == null) {
            alert('输入的参数不是时间格式');
            return false;}
        if (a[1]>24 || a[3]>60 || a[4]>60)  {
            alert("时间格式不对");
            return false;     }
        return true;
    },
    "string_isip" : function (s){
        var check=function(v){try{return (v<=255 && v>=0)}catch(x){return false}};
        var re=s.split(".")
        return (re.length==4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false;
    }

}